package com.haixinga.kits;

import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Author terrfly
 * @Date 2019/6/1 10:10
 * @Description String 常用工具类
 **/
public class StrKit {

    /** 如果null, 返回空串 **/
    public static String orEmpty(String str){
        return str == null ? "" : str;
    }

    /** 是否为空 **/
    public static boolean isEmpty(String str){
        return str == null || str.isEmpty() ? true : false;
    }

    /** 删除文本中所有的空格 **/
    public static String delBlank(String str){
        if(str == null) return null;
        return str.replaceAll(" ", "");
    }


    /**
     * 根据正则表达式匹配某个字符串, 处理所有正确匹配的值
     * @param originStr 需要匹配的原文本
     * @param regExp 正则表达式
     * @param callback 将正确匹配的文字通过参数进行回调处理
     */
    public static void matchAll(String originStr, String regExp, matchAllCallback callback){

        Pattern pattern = Pattern.compile(regExp);
        Matcher matcher = pattern.matcher(originStr);
        while(matcher.find()){
            callback.process(new String(matcher.group()));
        }
    }

    /**
     * 返回UUID字符串，并去掉了-
     * @return
     */
    public static String randomUUID(){
        return UUID.randomUUID().toString().replaceAll("-", "");
    }

    /** 指定长度的随机字符串 **/
    public static String randomUUID(int length){

        if(length <= 0 ) return "";

        String result = randomUUID();
        if(length <= result.length()){ //如果所需位数小于UUID长度
            return result.substring(0, length);
        }

        while( length > (result += randomUUID()).length() ){} //如果所需位数不满足就继续循环, 直到满足位置
        return result.substring(0, length);
    }


    /** 判断是否包含中文 **/
    public static boolean hasChinese(String matchStr){
        return Pattern.compile("[\u4e00-\u9fa5]").matcher(matchStr).find();
    }


    /** ------- 以下为回调函数定义 ---------- **/

    /** 正则匹配回调 **/
   public interface matchAllCallback{
        void process(String matchedStr);
   }
}
